#ifndef __XMLPARSE_H__
#define __XMLPARSE_H__

#include <iostream>
#include <string>
#include <cstring>
#include <libxml2/libxml/parser.h>
#include <libxml2/libxml/tree.h>
#include <iconv.h>
#include "common.h"
#include "log.h"
#include "type.h"


class qXmlParse 
{
public:
  qXmlParse();
  ~qXmlParse();
  
  char* convChar(char* in, const char* fromEncode, const char* toEncode);

  bool initFile(const char* filename);
  xmlNodePtr getRootNode();
  xmlNodePtr getChildNode(xmlNodePtr node, const char* nodename);
  xmlNodePtr getNextNode(xmlNodePtr node, const char* nodename);

  bool getNodePropNum(xmlNodePtr node, const char* propname, void* dstname, size_t dstsize);
  bool getNodePropStr(xmlNodePtr node, const char* propname, std::string& str);

private:
  xmlDocPtr doc_;

};

#endif
